import asyncio

import aiohttp

urls = [
    'https://i1.huishahe.com/uploads/tu/201910/10219/3.jpg',
    'https://i1.huishahe.com/uploads/tu/201911/10098/2.jpg',
    'https://i1.huishahe.com/uploads/tu/201911/9999/rnd2c4032691.jpeg'
]


# 定义异步函数，用于下载图片并保存到本地
async def get(name, url):
    async with aiohttp.ClientSession() as session:  # 创建并管理 aiohttp 的会话
        resp = await session.get(url)  # 发送异步的 GET 请求获取图片
        with open(name, 'wb') as f:  # 以二进制写入模式打开文件
            f.write(await resp.content.read())  # 读取图片内容并写入文件
    print("ok")  # 打印表示下载完成


# 定义主异步函数
async def main():
    tasks = []  # 创建任务列表
    names = ['t0.jpg', 't1.jpg', 't2.jpg']  # 定义文件名列表
    for i in range(3):  # 循环创建任务
        tasks.append(asyncio.create_task(get(names[i], urls[i])))  # 将下载任务添加到任务列表
    await asyncio.wait(tasks)  # 等待所有任务完成


if __name__ == '__main__':
    loop = asyncio.new_event_loop()  # 创建新的事件循环
    asyncio.set_event_loop(loop)  # 设置当前的事件循环
    loop.run_until_complete(main())  # 运行主异步函数，直到完成
